const express = require("express");
const path = require("path");
const os = require("os");
const fs = require("fs");
const app = express();

// 允许所有来源的跨域请求
app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept"
  );
  next();
});
// 创建API路由
const filePath = path.join(__dirname, "/js/amap.js"); // 替换为你的文件路径
// 设置路由来处理文件读取请求
app.get("/api/map-data", (req, res) => {
  // 使用 fs.readFile 读取文件内容
  fs.readFile(filePath, "utf8", (err, data) => {
    if (err) {
      console.error("Error reading file", err);
      return res.status(500).send("Error reading the file");
    }
    // 设置响应的 Content-Type 为 text/javascript
    res.setHeader("Content-Type", "text/javascript");
    // 发送原始文件内容
    res.send(data);
  });
});
const filePath1 = path.join(__dirname, "/js/amap-plugin.js"); // 替换为你的文件路径
app.get("/api/mapsplugin", (req, res) => {
  // 使用 fs.readFile 读取文件内容
  fs.readFile(filePath1, "utf8", (err, data) => {
    if (err) {
      console.error("Error reading file", err);
      return res.status(500).send("Error reading the file");
    }
    // 设置响应的 Content-Type 为 text/javascript
    res.setHeader("Content-Type", "text/javascript");
    // 发送原始文件内容
    res.send(data);
  });
});
// 配置卫星图层的路由
app.use("/satellite", express.static(path.join(__dirname, "MAP/satellite")));

// 配置城市图层的路由
app.use("/city", express.static(path.join(__dirname, "MAP/city")));

// 获取当前操作系统是否为 Linux
const isLinux = process.platform === "linux";

// 根据不同操作系统设置基础 URL
let base_url;

if (isLinux) {
  function getIPByInterface(interfaceName) {
    const interfaces = os.networkInterfaces();
    if (interfaces.hasOwnProperty(interfaceName)) {
      const interfaceInfo = interfaces[interfaceName];
      for (const iface of interfaceInfo) {
        // 只获取 IPv4 地址，并且不是 loopback 地址
        if (iface.family === "IPv4" && !iface.internal) {
          return iface.address;
        }
      }
    }
    return null; // 如果指定的接口不存在或者没有对应的 IP 地址，则返回 null
  }

  const interfaceName = "eth1"; // 指定要检查的网络接口名称
  const ip = getIPByInterface(interfaceName);
  if (ip) {
    console.log(`IP address of ${interfaceName}: ${ip}`);
    base_url = `http://${ip}:3000`;
  } else {
    console.log(`No IP address found for interface ${interfaceName}`);
  }
} else {
  const port = process.env.PORT || 3000;
  const host = process.env.HOST || "localhost";
  // 其他操作系统下的默认设置
  base_url = `http://${host}:${port}`;
}

// 启动服务器
const server = app.listen(3000, () => {
  console.log(`Server is running on ${base_url}`);
});
// const { createProxyMiddleware } = require('http-proxy-middleware');
// // 创建一个代理，将 HTTP 请求转发到 HTTPS 服务
// const proxy = createProxyMiddleware({
//   target: 'https://localhost:3000', // 你的 HTTPS 服务的地址
//   changeOrigin: true,
//   secure: false
// });

// // 将代理应用到所有路径
// app.use('/', proxy);

// // 启动你的 HTTP 服务
// app.listen(3000, () => {
//   console.log('HTTP server is running on port 3000');
// });
